var {Response} = require('ringo/webapp/response');
var model = require('./model');

exports.index = function (req) {
	
	var posts = model.Post.query().select();
	
    return Response.skin('skins/adminindex.html',{
    	posts: posts,
    });
};

exports.create = {};

// 新規登録なので入力枠だけ出す。
exports.create.GET = function(req){
	
	return Response.skin('skins/edit.html');
};

// 新規登録はモデルに画面の入力値を設定し、保存。
// 保存後は表示用のパスにリダイレクトする。
exports.create.POST = function(req){
	
	var post = new model.Post();
	
	for each (var key in ['text', 'lead','title']){
		post[key] = req.params[key];
	}
	
	post.author = 'unknown author';
	post.createtime = new Date();
	post.save();
	
	print('insert done. post._id:' + post._id);
	
	return Response.redirect('/admin/edit/' + post._id);
};

exports.edit = {};

// パラメータを元にデータを検索して画面に表示
exports.edit.GET = function(req, id){
	
	print("action:edit.GET")
	
	var post = model.Post.get(id);
	
	var message = req.session.data.message;
	req.session.data.message = "";
	
	return Response.skin('skins/edit.html',{
		post :post,
		message: message,
	});
};

// リクエストパラメータに一致するデータに対して画面の値で更新する。
// 更新した後は元のパスにリダイレクトする。
exports.edit.POST = function(req ,id){
	
	print("action:edit.POST")
	
	var post = model.Post.get(id);
	
	for each(var key in['text','lead','title']){
		post[key] = req.params[key];
	}
	
	post.save();
	
	req.session.data.message = "Successfully saved Post" + id;
	
	return Response.redirect(req.path);
};
